package com.jsb.laundry.dao;

import com.jsb.laundry.model.dto.CouponRecord;
import com.jsb.laundry.model.dto.Promotion;
import com.jsb.laundry.model.dto.UserDetailDto;
import com.jsb.laundry.model.dto.UserInfoDto;
import com.jsb.laundry.model.entity.CapitalAccount;
import com.jsb.laundry.model.entity.UserDetail;
import com.jsb.laundry.model.entity.UserInfo;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;

/**
 * 用户相关信息
 */
public interface UserInfoDao {
    String findByUnionId(String openid);

    String getUserIdByOpenid(String openid);

    String getOpenIdByUserId(String appUserId);

    int getRiderOpenId(String appUserId);

    int addBonus(@Param("userId") String appUserId, @Param("bonus") int bonus);

    int addRiderInvitationRecords(@Param("userId") String appUserId, @Param("newUserId") String newUserId);

    /**
     * 用户注册
     * @param userInfoDto
     */
    int addUserInfo(UserInfoDto userInfoDto);

    /**
     * 添加个人详情
     *
     * @param userDetail
     * @return
     */
    int addUserDetail(UserDetailDto userDetail);

    /**
     * 添加邀请人
     * @param promotion
     * @return
     */
    int addInvitationRecord(Promotion promotion);

    /**
     * 再次邀请人
     * @param userId
     * @return
     */
    int updUserAccountInfo(@Param("userId")String userId,@Param("bonus") int currentBonus);

    /**
     * 添加流水记录(收益、提现)
     * @param userId
     * @param currentMoney
     * @return
     */
    int addUserStreamRecord(@Param("streamId") String streamId,@Param("userId") String userId,@Param("currentMoney") int currentMoney);

    /**
     * 赠送了什么优惠券
     * @param userId
     * @param couponId
     * @return
     */
    HashMap getCouponById(@Param("appUserId")String userId, @Param("couponId") String couponId);

    /**
     * 获取券是否被领取(0:未被领取过，1：被人领取过)
     * @param appUserId
     * @param couponId
     */
    int findCouponReceiveStatus(@Param("userId") String appUserId,@Param("couponId") String couponId);

    /**
     * 系统赠送优惠券(在用户的带领取列表中,用户领取后才可使用)
     * @param couponInfo
     * @return
     */
    int addSystemCoupon(HashMap couponInfo);
    /**
     * 将优惠券赠送他人（优惠券被使用）
     * @param couponRecord
     * @return
     */
    int shareCoupon(CouponRecord couponRecord);

    /**
     * 被赠送的优惠券（优惠券被人领取）(邀请人id、新用户id、优惠券id)
     * @param appUserId 邀请人id
     * @param userId    新用户id
     * @param couponId  优惠券id
     * @return
     */
    int updCouponStatus(@Param("appUserId")String appUserId, @Param("userId")String userId, @Param("couponId")String couponId);

    /**
     * 把赠送人赠送的券状态修改为已领取
     * @param couponRecord
     * @return
     */
    int updShareCoupon(CouponRecord couponRecord);

    /**
     * 获取优惠券的信息
     * @param couponId
     * @return
     */
    CouponRecord getCouponInfoById(String couponId);

    /**
     * 添加一条优惠券给领取人
     * @param couponRecord
     * @return
     */
    int addGetShareCoupon(CouponRecord couponRecord);

    /**
     * 查询被邀请用户
     * @param userId
     * @param appUserId
     * @return
     */
    String findByAppUserId(@Param("userId") String userId,@Param("appUserId")  String appUserId);

    /**
     * 获取用户详情
     * @param userId
     * @return
     */
    UserDetail getUserDetail(String userId);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    UserInfo getUserInfo(String userId);

    /**
     * 获取是否购买过优惠券
     * @param userId
     * @return
     */
    String getUserCouponUsableNum(String userId);

    int addCapitalAccount(CapitalAccount account);

    int updateUnionId(@Param("unionId") String unionId, @Param("openId") String openId);

    String getRiderInfo(String appUserId);
    String getRiderInfoById(String id);

    String getUserInfoId(String appUserId);
    String getUserInfoIdById(String id);

    UserInfo getUserInfoByPhone(String phone);
}
